package main

import "fmt"

type VertexP struct {
	X int
	Y int
}

func main() {
	i, j := 42, 2701

	p := &i         // MARK &取指针
	fmt.Println(p)  //0xc000128058
	fmt.Println(*p) // MARK *取指针的值 42
	*p = 21         // MARK 指针p指向的值 赋值21
	fmt.Println(i)  //42

	p = &j
	*p = *p / 37
	fmt.Println(j) //73=2701/37

	v := VertexP{0, 0}
	v.X = 1
	fmt.Println(v)
	q := &v
	q.X = 2 //MARK 其实这里是 *q.X , 就是其实是v.X , 用指针直接取 是go语法题
	fmt.Println(v)

	vd := new(VertexP) //MARK new 拿到的是指针, 字段都0值
	fmt.Println(vd)    //&{0 0}
	i3 := new(int)
	fmt.Println(i3) //0xc0001280e8
}

func (v *VertexP) m() { //MARK 这种却不是 取类型的值的意思 而是表示 是值的指针类型
	fmt.Println(v.X)
}
